
import PlayerManager from "@/utils/icc/PlayerManager";

export default class DHPlayer {
    constructor(id) {
      this.dom = document.getElementById(id);
      this.init(id)
    }
    init(id) {
      const player = new PlayerManager({
        el: id,
        type: 'real', /** real - 实时预览  record - 录像回放 **/
        maxNum: 1,  /** 一个播放器上限能播放的路数，可根据实际情况设置，支持 1 4 9 16 25 **/
        num: 1,   /** 初始化，页面显示的路数 **/
        showControl: false, /** 是否显示工具栏，默认显示 **/
        isIntranet: true, // 固定写死 true
        showRecordProgressBar: true, // 录像回放时，录像的进度条是否需要
        prefixUrl: '../dhPro',
        importLoad: true,
        receiveMessageFromWSPlayer: (methods, data) => { /* 回调函数，可以在以下回调函数里面做监听 */
          switch (methods) {
            case 'initializationCompleted':
              player.playRealVideo({
                channelList: [{
                }],
                streamType: 1, // {Number} 码流类型 1-主码流 2-辅码流
                windowIndex: 0 // {Number} 播放窗口序号（从0开始）
            })
            console.log(data) // 通道数据
              break;
            case "realSuccess": // 实时预览成功
              console.log("实时预览成功")
              break;
            case "realError": // 实时预览失败
              console.log("实时预览失败")
              break;
            case "talkError": // 对讲失败
              console.log("对讲失败");
              break;
            case 'selectWindowChanged': // 选中的窗口发生改变
              console.log(data, "返回窗口信息")
              break;
            case 'windowNumChanged': // 播放器显示的路数发生改变
              console.log(data, "返回显示的窗口数量")
              break;
            case 'closeVideo': // 视频关闭回调
              // 点击关闭按钮引发的视频关闭进行提示
              // 切换视频引发的视频关闭不进行提示
              if (!data.changeVideoFlag) {
                console.log(`窗口${data.selectIndex}的视频已关闭`)
              }
              break;
            case 'statusChanged': // 视频状态发生改变
              break;
            case 'errorInfo': // 错误信息汇总
              console.log(data, "可打印查看错误消息");
          }
        }
      })
      this.player = player;
    }
    startPlayer(rtspURL) {
      // eslint-disable-next-line no-useless-escape
      let arr = rtspURL.match(/^rtsp:\/\/([^\/:]+)(:\d*)?/)
      const host = arr[1];
      const port = arr[2] || '';
      let wsStr = `ws://${host}${port}`
      // console.log('?????拿到了吗', rtspURL, wsStr)
      this.player.realByUrl({
        playType: "url", // 写死url
        rtspURL,
        wsURL: wsStr,
        // wsURL: "ws://119.36.17.241:9100",
        channelId: '1000004$1$0$0', //必传，通道id
        streamType: "1", // 1-主码流  2-辅码流 (可不传，默认主码流)
        selectIndex: "0",
        // playerAdapter: "selfAdaption",
        channelData: {  // 建议传, 通道树信息
          // id: channelCode, // {String} 通道编码
          // deviceCode: deviceCode, // {String} 设备编码
          // deviceType: deviceType, // {String} 设备类型
          // channelSeq: channelSeq, // {String|Number} 通道序号
        }, // 选传
      });
    }
    destroy() {
      this.player.destroy();
    }
}
